package com.gd.iot.energy.service.superadmin;

import com.baomidou.mybatisplus.extension.service.IService;
import com.gd.iot.energy.po.superadmin.AdminPO;
import com.gd.iot.energy.po.superadmin.AdminRolePO;
import com.gd.iot.energy.pojo.superadmin.dto.AdminSaveDTO;
import com.gd.iot.energy.pojo.superadmin.vo.AdminPageVO;
import com.gd.iot.energy.pojo.common.vo.PageVO;
import com.gd.iot.energy.pojo.superadmin.vo.AdminVO;

import java.util.List;

/**
 * 用户管理
 */
public interface AdminService extends IService<AdminPO> {

    /**
     * 获取有指定角色的管理员
     * @param ids 角色id
     * @return
     */
    List<AdminRolePO> getAdminByRoleIds(List<Integer> ids);

    /**
     * 分页数据
     *
     * @param username    查询条件-用户名
     * @param name        查询条件-姓名
     * @param email       查询条件-邮箱
     * @param pageSize    每页数量
     * @param pageNum     页码
     * @param orderColumn 排序字段
     * @param orderType   排序类型(asc,desc)
     * @return
     */
    PageVO<AdminPageVO> getPageAdminVOs(String username, String name, String email, Integer pageSize, Integer pageNum, String orderColumn, String orderType);

    /**
     * 通过id获取管理员
     * @param id
     * @return
     */
    AdminSaveDTO getAdmin(Integer id);

    /**
     * 新增管理员
     * @param adminSaveDTO
     * @return
     */
    Long add(AdminSaveDTO adminSaveDTO);

    /**
     * 更新管理员
     * @param adminSaveDTO
     * @return
     */
    boolean updateAdmin(AdminSaveDTO adminSaveDTO);

    /**
     * 删除管理员
     * @param ids
     * @return
     */
    boolean delete(List<Integer> ids);

    /**
     * 所有管理员列表
     * @return
     */
    List<AdminVO> getAllAdmin();
}
